package algorithm;

public class leetcode_0024 {
    public ListNode swapPairs(ListNode head) {
        if(head==null||head.next==null) return head;
        ListNode q=head;
        ListNode p=head.next;
        q.next=p.next;
        p.next=q;
        head=p;
        if(q.next==null||q.next.next==null) return head;
        q=q.next;
        p=q.next;
        ListNode r=head.next;
        while(true){
            q.next=p.next;
            p.next=q;
            q=q.next;
            r.next=p;
            if(q==null) break;
            p=q.next;
            if(p==null) break;
            r=r.next.next;
        }
        return head;
    }
}
